/**
 * Auteur: Steven Ferey
 * Date: 25/10/11
 */

/**
 * Traduit le mot passé en parametre en anglais
 * vérifie que le mot n'est pas déjà present dans la base de donnees
 */
function test_suggestion(mot) {
    if(mot.value != ""){
        traduction_FR_EN(mot);
        req_suggestion(mot.value);
    }
}


/**
 * Prend en parametre un mot en français et 
 * vérifie si ce mot est présent dans la base de données
 * return true si le mot n'est pas présent.
 *          false sinon.
 */
function req_suggestion(mot_fr) {
    
    var bsuggestion = false ;

    var XhrObj = getXMLHttpRequest();

    content = document.getElementById("mot_fr_check"); 	//zone d'affichage
	
    XhrObj.open("POST", "verif_suggestion.php", false);//false pour synchrone

    XhrObj.onreadystatechange = function()
    {
        if (XhrObj.readyState == 4 && XhrObj.status == 200) {//si le traitement est terminé
            
            if (XhrObj.responseText) {//si le mot n'est pas present dans la base

                content.innerHTML='<img src="img/success.png" alt="Succes"/> OK';
                bsuggestion = true; // c'est un nouveau mot
            
            } else if (!XhrObj.responseText){//si le mot est present dans la base

                content.innerHTML='<img src="img/error.png" alt="Mot présent"/> D&eacute;j&agrave; pr&eacute;sent';
                bsuggestion = false; // erreur mot déjà existant
            }
        }
    }

    XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    XhrObj.send('mot_fr='+mot_fr);//on envoi le parametre
    
    return bsuggestion;
    
}

/**
 * prend en parametre un mot français et anglais
 * pour l'ajouter a la base de donnees
 * return true si l'enregistrement est effectué
 *          false sinon.
 */
function add_suggestion(mot_fr, mot_en){
    
    var bsuggestion = false ;
    
    var XhrObj = getXMLHttpRequest();
	
    XhrObj.open("POST", "add_suggestion.php", false);//false pour synchrone

    XhrObj.onreadystatechange = function()
    {
        if (XhrObj.readyState == 4 && XhrObj.status == 200) {//si le traitement est terminé
            bsuggestion = XhrObj.responseText;//resultat du traitement
        }
    }

    XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    XhrObj.send('fr='+mot_fr+'&en='+mot_en);//on envoi les parametres

    return bsuggestion;
}

/**
 * Prend en parametre le code saisi par l'utilisateur
 * return true si le code est le meme que l'image
 *          false sinon.
 */
function verif_code(code){
    var bcode = false ;
    
    var XhrObj = getXMLHttpRequest();
	
    XhrObj.open("POST", "verif_code_suggestion.php", false);//false pour synchrone

    XhrObj.onreadystatechange = function()
    {
        if (XhrObj.readyState == 4 && XhrObj.status == 200) {//si le traitement est terminé
            bcode = XhrObj.responseText ;//resultat du traitement
        }
    }

    XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    XhrObj.send('code='+code);//on envoi le parametre

    return bcode;
}

/**
 * retourne la chaine passé en parametre en majuscule.
 */
function makeUppercase(my_string) {
    return my_string.toUpperCase();
}

/**
 * Enleve les espaces de la chaine passee en paramètre
 */
function trim(str) {
    return String(str).replace(/^\s*/,'').replace(/\s*$/,'');
}

/**
 * apelle les fonctions "makeUppercse", "trim" et "no_accent".
 */
function transformer_chaine(mot){
    var newString = makeUppercase(trim(mot.value));
    $("#" + mot.id).attr('value', newString);
    return newString;
}

/**
 * Autorise les lettres de l'alphabet, espaces et "-"
 * ainsi que les touche suivante:
 * 
 * KEY_LEFT	= 37;
 * KEY_RIGHT	= 39;
 * KEY_BACK_TAB = 8;
 * KEY_TAB      = 9;
 * KEY_DEL	= 46;
 * KEY_ENTER	= 13;
 */
function valid_carac(evt) {
    var keyCode = evt.which ? evt.which : evt.keyCode;
    if (keyCode == 9 || keyCode == 13 || keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39){
        return true;
    }
    var accepter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXUZ- ";
    if (accepter.indexOf(String.fromCharCode(keyCode)) >= 0) {
        return true;
    }
    else {
        return false;
    }
}


/**
 * verifie si les champ sont correctement remplis
 * puis enregistre la suggestion dans la base.
 * 
 * L'utilisateur est averti de la suite de sa demande 
 * dans un message alerte JavaScript.
 */
function testChamps(f) {
    
    if(f.mot_en.value == '' || f.mot_fr.value == '' || f.code.value == ''){
        jError('Renseignez tous les champs svp !');
    }else if (!req_suggestion(f.mot_fr.value)) {
        jError('votre mot est d&eacute;j&agrave; pr&eacute;sent dans la base');
    }
    else if(!verif_code(f.code.value)){
        jError('Code saisi incorrect');
    }else if(!add_suggestion(f.mot_fr.value, f.mot_en.value)){
        jError('Une erreur est survenue lors de l\'enregistrement.');
    }else{
        f.mot_en.value = '';
        f.mot_fr.value = '';
        f.code.value = '';
        document.getElementById("mot_fr_check").innerHTML='';
        jSuccess('Votre suggestion a &eacute;t&eacute; soumise au mod&eacute;rateur.');
    }
    return false;
}

function testChampsAdmin(f) {
    
    if(f.mot_en.value == '' || f.mot_fr.value == ''){
        jError('Renseignez tous les champs svp !');
    }else if (!req_suggestion(f.mot_fr.value)) {
        jError('votre mot est d&eacute;j&agrave; pr&eacute;sent dans la base');
    }else if(!add_suggestion(f.mot_fr.value, f.mot_en.value)){
        jError('Une erreur est survenue lors de l\'enregistrement.');
    }else{
        f.mot_en.value = '';
        f.mot_fr.value = '';
        jSuccess('Votre suggestion a &eacute;t&eacute; soumise au mod&eacute;rateur.');
    }
    return true;
}